package com.vert.db;

import com.vert.db.model.DBModel;
import com.vert.db.model.IPage;

import java.util.List;
import java.util.Map;

/**
 * @Classname TableService
 * @Description TODO
 * @Date 2022/5/29 20:33
 * @Created by XiongXiong
 * @Author: X.I.O
 */
public interface TableService {

    /**
     *
     * @param <T>  通过主键id获取
     */
    public <T> T getOneById(Object id,Class<?> cls);

    /**
     * 更新
     */
    public <T> T updateOneById(T t,Class<?> cls);

    /**
     * 新增
     */
    public <T> T saveOne(T t,Class< ? > cls);

    /**
     * 查询列表
     * @param <T>
     * @return
     */
    public <T> List<T> getList(Class< ? > cls);

    /**
     * 获取查询模板
     * @param
     * @param <T>
     * @return
     */
    public  DBModel getDBModel(Class< ? > cls);

    /**
     *
     * @param cls
     * @return
     */
    public SqlBuilder getSqlBuilder(Class< ? > cls);

    /**
     * 获取一个
     * @param sqlBuilder
     * @param <T>
     * @return
     */
    public <T> T selectOne(SqlBuilder sqlBuilder,Class<?> cls);

    /**
     * 获取列表
     * @param sqlBuilder
     * @param <T>
     * @return
     */
    public <T> List<T> selectList(SqlBuilder sqlBuilder,Class< ? > cls);

    /**
     * 获取分页
     * @param sqlBuilder
     * @param <T>
     * @return
     */
    public <T>IPage<T> getPage(SqlBuilder sqlBuilder,Class<?> cls);
}
